package cn.lg.soar.core.manager;

import java.util.function.Supplier;

/**
 * 防抖管理器（防止同一个客户端执行同一个方法，在未执行完成时又进行多次执行，但是执行完成后可再次执行）
 * @author luguoxiang
 * @date 2022/4/4
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface DebounceManager {

    /**
     * 加锁执行
     * @param lockName 锁名称（key）
     * @return
     * @param <T>
     */
    <T>T lock(String lockName, Supplier<T> handler);

    /**
     * 加锁执行
     * @param lockName 锁名称（key）
     * @param handler 要加锁执行的方法
     */
    void lock(String lockName, Runnable handler);

}
